www.gusucode.com > RQCMS PHP文章管理系统 v2.3PHP源码程序 > RQCMS PHP文章管理系统 v2.3/rqcms_v2.3/rqcms_v2.3/core/manager/attachment.php

    <?php

if (!$action) $action = 'list';
include RQ_CORE.'/include/attachment.php';

if(RQ_POST)
{
	switch($action)
	{
		case 'delattachments':	//批量删除附件
			if ($attachmentids = implode_ids($_POST['attachment'])) {
				$nokeep = array();
				$query  = $DB->query("SELECT aid,filepath FROM ".DB_PREFIX."attachment WHERE aid IN ($attachmentids)");
				while($attach = $DB->fetch_array($query)) {
					$nokeep[$attach['aid']] = $attach;
				}
				removeattachment($query);
				$articleid = intval($_POST['aid']);
				$DB->query("Delete FROM ".DB_PREFIX."attachment WHERE aid IN ($attachmentids)");
				$attarr=$DB->fetch_first('Select count(*) from '.DB_PREFIX."attachment WHERE articleid=$articleid");
				$attcount=$attarr['count(*)'];
				$DB->query("update ".DB_PREFIX."article set attachments=$attcount where aid=$articleid");
				redirect('成功删除所选附件', $admin_url.'?file=attachment&action=list&aid='.$articleid,'2');
				} else {
				redirect('未选择任何附件');
			}
		break;
		case 'dorepair':
			$query = $DB->query("SELECT aid,articleid,filepath FROM ".DB_PREFIX."attachment");
			$articledic=array();
			while ($attach = $DB->fetch_array($query)) {
				if(!file_exists(RQ_DATA.'/files/'.$attach['filepath'])){
					$DB->unbuffered_query("DELETE FROM ".DB_PREFIX."attachment WHERE aid='".$attach['aid']."'");
				}
				else
				{
					$articleid=$attach['articleid'];
					if(isset($articledic[$articleid])) $articledic[$articleid]=$articledic[$articleid]+1;
					else $articledic[$articleid]=1;
				}
			}
			unset($attach,$query);
			foreach($articledic as $k=>$v)
			{
				$DB->query("Update ".DB_PREFIX."article set `attachments`=$v where `aid`=$k");
			
			}
			
			redirect('成功修复'.count($articledic).'个附件记录', $admin_url.'?file=attachment&action=list');
		break;
		case 'addattachtoarticle':	//添加附件到指定文章
			$aid = intval($_POST['aid']);
			include_once RQ_CORE.'/include/article.php';
			$article = $DB->fetch_first("SELECT title,attachments,visible FROM ".DB_PREFIX."article WHERE aid='$aid'");
			if(!$article) {
				redirect('文章不存在', $admin_url.'?file=attachment');
			}

			// 修改附件
			$attachment_count=0;
			$attachments=getAttach();
			if($attachments&&is_array($attachments))
			{
				foreach($attachments as $key=>$attachment)
				{
					$DB->unbuffered_query("Insert into ".DB_PREFIX."attachment (`articleid`,`dateline`,`filename`,`filetype`,`filesize`,`filepath`,`isimage`) values ('$aid','$timestamp','$attachment[filename]','$attachment[filetype]','$attachment[filesize]','$attachment[filepath]','$attachment[isimage]')");
					$attachments[$key]['aid']=$DB->insert_id();
					unset($attachments[$key]['filepath']);
					unset($attachments[$key]['thumb_filepath']);
					$attachment_count++;
				}
			}
			$attachstr=addslashes(serialize($oldattach));
			$DB->query('update '.DB_PREFIX."article set `attachments`=`attachments`+$attachment_count where aid='$aid'");
			redirect('成功上传了'.$attachment_count.'个附件到《'.$article['title'].'》', $admin_url.'?file=attachment&action=list&aid='.$aid);
			break;
	}
}
else
{
	$view = in_array(isset($_GET['view'])?$_GET['view']:'', array('image', 'file','hot','big')) ? $_GET['view'] : '';
	if ($action == 'list') {
		if($page) {
			$start_limit = ($page - 1) * 30;
		} else {
			$start_limit = 0;
			$page = 1;
		}
		$sql = "WHERE 1";
		$subnav = '全部附件';
		if ($view == 'image') {
			$sql .= " AND (a.filetype LIKE '%image/%')";
			$subnav = '图片附件';
		} elseif ($view == 'file') {
			$sql .= " AND !(a.filetype LIKE '%image/%')";
			$subnav = '非图片附件';
		}elseif ($view == 'hot') {
			$order= "downloads";

		} elseif ($view == 'big') {
			$order = "filesize";
		}
		$aid =isset($_GET['aid'])?intval($_GET['aid']):'';
		if ($aid) {
			$article = $DB->fetch_first("SELECT title FROM ".DB_PREFIX."article WHERE aid='$aid'");
			$subnav = '《'.$article['title'].'》的附件';
			$sql .= " AND a.articleid='$aid'";
		} else {
			$warning = '';
			$a_dir = RQ_DATA.'/files/';
			$dircount = dircount($a_dir);
			$stats = $DB->fetch_first("SELECT count(*) as count, sum(filesize) as sum FROM ".DB_PREFIX."attachment");
			$stats['count'] = ($stats['count'] != 0) ? $stats['count'] : 0;
			$stats['sum'] = ($stats['count'] == 0) ? '0 KB' : sizecount($stats['sum']);
			if (!@is_dir($a_dir)) {
				$warning = ' <font color="#FF0000"><strong>(文件夹无效,请重新设定上传文件夹!)</strong></font>';
			}
		}

		$total = $DB->num_rows($DB->query("SELECT aid FROM ".DB_PREFIX."attachment a ".$sql.(isset($order)?" order by $order desc":'')));
		$aidadd=$aid?'&aid='.$aid:'';
		$multipage = multi($total, 30, $page, $admin_url.'?file=attachment&action=list&view='.$view.$aidadd);
		$query = $DB->query("SELECT a.*,ar.title as article FROM ".DB_PREFIX."attachment a LEFT JOIN ".DB_PREFIX."article ar ON (ar.aid=a.articleid) $sql ORDER BY ".(isset($order)?"$order DESC, ":'')."a.aid DESC LIMIT $start_limit, 30");

		$attachdb = array();
		while ($attach = $DB->fetch_array($query)) {
			$attach['filename'] = htmlspecialchars($attach['filename']);
			$attach['filepath'] = htmlspecialchars($attach['filepath']);
			$attach['filesize'] = sizecount($attach['filesize']);
			$attach['filetype'] = htmlspecialchars($attach['filetype']);
			$attach['name'] = htmlspecialchars($attach['filename']);
			$attach['dateline'] = date("Y-m-d H:i",$attach['dateline']);
			$pathdata = explode('/',$attach['filepath']);
			if (count($pathdata) == 2) {
				$attach['subdir'] = $pathdata[0];
			} 
			else $attach['subdir']='';
			$attachdb[] = $attach;
		}

		$title=$attach['article'];
		unset($attach);
		$DB->free_result($query);
	}
	if($action == 'repair') $subnav = '附件修复';
	if($action == 'clear') $subnav = '附件清理';
	if($action == 'list') $subnav = '附件管理';
}